package com.yq.day18.abstractdemo;

import com.sun.org.apache.regexp.internal.REUtil;
import com.sun.xml.internal.bind.v2.runtime.RuntimeUtil;
import jdk.nashorn.internal.codegen.CompilerConstants;

/**
 * @author 3307235355@qq.com
 * @since 2022/06/18 08:25
 *  1,abstract关键字在修饰方法的时候,和很多关键字是不能一起使用的,比如:
 *  *              a.final,抽象方法定义出来就是为了被重写的,final阻止重写,冲突
 *  *              b.private 私有方法不能重写,所以也冲突了
 *  *              c.static 静态方法也不能重写,也冲突了
 *  *         当然构造器属于特殊方法,它也不能用abstract修饰
 *
 *
 *
 *  只能用来修饰类和方法
 *
 */
public class Demo01 {
    public static void main(String[] args) {
        Person p1 = new Student();
        System.out.println(p1.a);
        System.out.println(Student.b);
        System.out.println(Student.c);
        p1.test();
        System.out.println("============");
        System.out.println(p1.toString());
    }
}

abstract class Person{
    int a=1;
    static int b =1;
    static final int c=90;
    {
        a=90;
    }
    static {
        b=80;
    }

    public Person() {
    }

    public Person(int a) {
        this.a = a;
    }

    public abstract void test();

}

class Student extends Person{
    @Override
    public void test() {
        System.out.println(" student test");
    }

    @Override
    public String toString() {
        // System.out.println("a="+a);
        return  "a="+a;
    }
}
